/*
 * Copyright (c) 2019.  鼎捷软件股份有限公司.All rights reserved.
 */

package com.digiwin.dap.middleware.service;

import com.digiwin.dap.middleware.entity.BaseEntity;

/**
 * 表操作服务基类，提供基于sid的基本操作
 */
public interface EntityManagerService<T extends BaseEntity> {

    /**
     * 创建实体
     *
     * @param data 实体对象
     * @return 实体Sid
     */
    long create(T data);

    /**
     * 根据Sid 查询实体
     *
     * @param sid 实体Sid
     * @return 实体对象
     */
    T findBySid(long sid);

    /**
     * 修改实体
     *
     * @param data 实体对象
     */
    void update(T data);

    /**
     * 修改实体
     *
     * @param data  实体对象
     * @param force 强制更新
     */
    void update(T data, boolean force);

    /**
     * 根据sid删除实体
     *
     * @param sid 实体Sid
     */
    void deleteById(long sid);

    /**
     * 根据Sid 禁用实体
     *
     * @param sid 实体Sid
     */
    void disable(long sid);

    /**
     * 根据Sid 启用实体
     *
     * @param sid 实体Sid
     */
    void enable(long sid);

}
